#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 使用生成器创建新的迭代模式
问题: 你想实现一个自定义迭代模式，跟普通的内置函数比如 range() , reversed() 不一样。
提示 : 
    1. 普通函数不同的是，生成器只能用于迭代操作
"""

def recipe1():
    for n in frange(0, 4, 0.5):
        print(f"{n = }")

    print(f"{list(frange(0, 1, 0.125)) = }")

def recipe2():
    c = countdown(3)
    print(f"{next(c) = }")
    print(f"{next(c) = }")
    print(f"{next(c) = }")
    print(f"{next(c) = }")

def frange(start, stop, increment):
    """生产某个范围内浮点数的生成器"""
    x = start
    while x < stop:
        yield x
        x += increment

def countdown(n):
    print('Starting to count from', n)
    while n > 0:
        yield n
        n -= 1
    print('Done')

def main():
    print('recipe1'.center(20, '*'))
    recipe1() 
    print('recipe2'.center(20, '*'))
    recipe2() 

if __name__ == '__main__':
    main()                  